/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Grafo;

import Exceptions.VerticeNuloException;
import Exceptions.VerticeJaExisteException;
import Exceptions.ArestaNulaException;
import Exceptions.ArestaJaExisteException;
import java.util.LinkedList;

public interface Graph {

    Vertice buscarVertice(String nome);

    boolean existeAresta(Aresta aresta);

    void inserirVertice(Vertice vertice) throws VerticeJaExisteException, VerticeNuloException;

    boolean existeVertice(Vertice vertice);

    void inserirAresta(Aresta aresta) throws ArestaJaExisteException, ArestaNulaException;

    LinkedList<Vertice> menorCaminho(Vertice origem, Vertice destino) throws VerticeNuloException;

    LinkedList<Vertice> recuperarVertices();

    public void acceptVisitor(Visitor visitor);
    
    public LinkedList<Vertice> breadthFirstTraversal (Visitor visitor, int start);
    
    public LinkedList <Vertice> dephFirstTraversal (Visitor visitor, int start);
}
